package errors

const None Type = 0
const (
	InvalidToken                Type = iota + 1000 // 无效的令牌。
	TokenExpired                                   // 令牌过期。
	UploadError                                    //上传失败
	EmptyParameter                                 //参数为空
	ParameterLengthExceedsLimit                    //参数长度超过限制
	EmptyVerificationCode                          //验证码为空
	VerificationCodeError                          //验证码错误
	CaptchaError                                   //验证码获取错误
	NoData                                         //未找到有效数据
	ParameterErr                                   //参数错误
	NotPermission                                  // 没有权限
)

const (
	UserNotExist              Type = iota + 1100 //用户不存在
	UserAlreadyExist                             //用户已经存在
	InvalidUsernameOrPassword                    //用户名或密码无效
	PasswordIncorrect                            //密码不正确
	AccountLocked                                //账户已锁定
	InvalidPhoneNumber                           //无效的电话号码
	PhoneNumberAlreadyUsed                       //电话号码已经被使用
	UserRegisterFailed                           //用户注册失败
	UserUpdateFailed                             //用户更新失败
	UserDeleteFailed                             //用户删除失败
	UserQueryFailed                              //
	DuplicateDataError                           //用户查询失败
	CannotDeleteItself                           //删除失败，不能删除自己
	UnboundPhoneNumber                           //未绑定手机号
	BindPhoneFailed                              //绑定手机失败
	UserNameIsTooLong                            // 用户名字太长
	UserDisabled                                 // 用户被禁用
	UserHasBike                                  // 用还有再绑定车辆
)

const (
	RoleNotExist       Type = iota + 1200 //角色不存在
	RoleAlreadyExist                      //角色已经存在
	RoleCreateFailed                      //角色添加失败
	RoleUpdateFailed                      //角色修改失败
	RoleDeleteFailed                      //角色删除失败
	RoleQueryFailed                       //角色查询失败
	RoleUseProhibitDel                    //角色有用户在使用禁止删除
	MenuExistSubmenu                      //此菜单存在子菜单不可删除
	MenuExitsSameName                     //存在相同的name修改失败
	JobExitsSameName                      //存在相同的name
	DeptExitsSameName                     //存在相同的name
	DeptConnotDel                         //此部门不能删除
	DeptUseProhibitDel                    //此部门有用户在使用禁止删除
	DeptExistSubDept                      //此部门存在子部门不可删除
	DeptExistApi                          //存在相同的API
	JobUseProhibitDel                     //此岗位有用户在使用禁止删除
)

func (t Type) String() string {
	switch t {
	case None:
		return "none"
	case InvalidToken:
		return "无效的令牌"
	case TokenExpired:
		return "令牌已过期"
	case UploadError:
		return "上传失败"
	case EmptyParameter:
		return "参数为空"
	case ParameterLengthExceedsLimit:
		return "参数长度超过限制"
	case EmptyVerificationCode:
		return "验证码为空"
	case VerificationCodeError:
		return "验证码错误"
	case CaptchaError:
		return "验证码获取失败"
	case NoData:
		return "暂无数据"
	case ParameterErr:
		return "参数错误"
	case NotPermission:
		return "您没有操作权限"

	case UserNotExist:
		return "用户不存在"
	case UserAlreadyExist:
		return "用户已经存在"
	case InvalidUsernameOrPassword:
		return "用户名或密码无效"
	case PasswordIncorrect:
		return "密码不正确"
	case AccountLocked:
		return "账户已锁定"
	case InvalidPhoneNumber:
		return "无效的电话号码"
	case PhoneNumberAlreadyUsed:
		return "电话号码已经被使用"
	case UserRegisterFailed:
		return "用户注册失败"
	case UserUpdateFailed:
		return "用户更新失败"
	case UserDeleteFailed:
		return "用户删除失败"
	case UserQueryFailed:
		return "用户查询失败"
	case DuplicateDataError:
		return "用户名重复"
	case CannotDeleteItself:
		return "删除失败，不能删除自己"
	case UnboundPhoneNumber:
		return "未绑定手机号"
	case BindPhoneFailed:
		return "绑定手机失败"
	case UserHasBike:
		return "用户有绑定车辆，请先解绑车辆"
	case RoleAlreadyExist:
		return "角色已经存在"
	case RoleNotExist:
		return "角色不存在"
	case RoleUseProhibitDel:
		return "角色有用户在使用禁止删除"

	case MenuExistSubmenu:
		return "此菜单存在子菜单不可删除"
	case MenuExitsSameName:
		return "存在相同的名称修改失败"
	case JobExitsSameName:
		return "存在相同的名称"
	case DeptExitsSameName:
		return "存在相同的部门名称"
	case DeptConnotDel:
		return "此部门不能删除"
	case DeptUseProhibitDel:
		return "此部门有用户在使用禁止删除"
	case DeptExistSubDept:
		return "此部门存在子部门不可删除"
	case DeptExistApi:
		return "存在相同的API"
	case JobUseProhibitDel:
		return "此岗位有用户在使用禁止删除"
	case UserNameIsTooLong:
		return "用户名字太长"
	case UserDisabled:
		return "用户已被禁用"
	default:
		return "未知错误"
	}
}
